package com.zlm.File;

import java.io.File;
import java.io.IOException;

/**
 * @author 13026
 */
public class File_function_demo {
    /*
     * File常见的成员方法
     *
     * 判断、获取
     * public boolean isDirectory()   判断此路径表示的File是否为文件夹
     * public boolean isFile()        判断此路径表示的File是否为文件
     * public boolean exists()        判断此路径表示的File是否存在
     * public long length()           返回文件的大小（字节数量）
     * public String getAbsolutePath()返回文件绝对路径
     * public String getPath()        返回定义文件时使用的路径
     * public String getName()        返回文件名称，带后缀
     * public long lastModified()     返回文件的最后修改时间（时间毫秒值）
     *
     * 创建、删除
     * public boolean createNewFile() 创建一个新文件
     * public boolean mkdir()         创建单级文件夹
     * public boolean mkdirs()        创建多级文件夹
     * public boolean delete()        删除文件、空文件夹
     *
     * 获取并遍历
     * public File[] listFiles()                     获取当前路径下的所有内容
     * public File[] listFiles(FilenameFilter filter)过滤内容
     * public String[] list()                        获取该路径下的所有内容（文件/文件夹名字）
     * public String[] list(FilenameFilter filter)   过滤内容
     * */
    public static void main(String[] args) throws IOException {
        // 判断、获取
        File file = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\a.txt");
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.exists());
        // length
        // 只能获取文件的大小，无法获取文件夹的大小，单位是字节
        // 如果需要获取文件夹的大小，需要把文件夹里的文件累加
        System.out.println(file.length());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getPath());
        System.out.println(file.getName());
        System.out.println(file.lastModified());

        // 创建、删除
        // createNewFile 创建文件
        File file2 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\newFile.txt");
        // 当前路径表示文件不存在，创建成功，返回true，已存在，创建失败，返回false
        // 如果父级路径不存在，方法会有IOException
        boolean b = file2.createNewFile();

        // 创建的一定是文件，如果路径不包含后缀名，创建一个没有后缀的文件
        File file3 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\bbb");
        boolean b2 = file3.createNewFile();

        // mkdir 创建文件夹（目录）
        // 没啥用，一律用mkdirs
        // 只能创建单级文件夹
        // windows路径唯一，同一路径下不能同时存在同名文件和文件夹
        File file4 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\ccc");
        // 创建的一定是文件，如果路径不包含后缀名，创建一个没有后缀的文件
        boolean b3 = file4.mkdir();

        // mkdirs 创建文件夹（目录）
        // 可以创建多级文件夹
        File file5 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\ddd\\eee");
        // 创建的一定是文件，如果路径不包含后缀名，创建一个没有后缀的文件
        boolean b4 = file5.mkdirs();

        // delete 删除文件/空文件夹
        // 不会走回收站
        // 删除的是有内容的文件夹，删除失败
        File file6 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage\\eee");
        // 创建的一定是文件，如果路径不包含后缀名，创建一个没有后缀的文件
        boolean b5 = file6.delete();

        // listFiles 获取文件夹所有内容
        // 当调用者File表示的路径不存在时，返回null
        // 当调用者File表示的路径是文件时，返回null
        // 当调用者File表示的路径是空文件夹时，返回长度为0的数组
        // 当调用者File表示的路径是有内容的文件夹时，返回所有文件夹和文件路径
        // 当调用者File表示的路径是有隐藏文件的文件夹时，返回所有文件夹和文件路径，含隐藏文件
        // 当调用者File表示的路径是有需要权限访问的文件夹时，返回null
        File file7 = new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage");
        // 创建的一定是文件，如果路径不包含后缀名，创建一个没有后缀的文件
        File[] files = file7.listFiles();
        if (files != null) {
            for (File fileItem : files) {
                System.out.println(fileItem);
            }
        }

        // list
        File file8= new File("D:\\myProject\\javaTest\\oneModule\\src\\com\\zlm\\File\\FilesPackage");
        String[] list = file8.list();
        if (list != null) {
            for (String s : list) {
                System.out.println(s);
            }
        }
    }
}
